home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 April / macformat-023.iso / Shareware City / Applications / chipmunkbasic3.10 / basic.man next >
Encoding:
Text File  |  1994-12-20  |  19.2 KB  |  759 lines  |  [TEXT/ttxt]

  1.     BASIC(1)        chipmunk-basic v3.1             BASIC(1)
  2.  
  3.  
  4.     Chipmunk BASIC - 'BASIC' language interpreter
  5.     
  6.  
  7.     SYNOPSIS    ( UNIX )
  8.  
  9.     basic [ filename ]
  10.  
  11.     DESCRIPTION
  12.  
  13.     Chipmunk basic is an interpreter for the BASIC language. If a
  14.     filename parameter is given, then the named program file is
  15.     loaded and run as a Basic program.  
  16.  
  17.     Basic commands and statements can be entered and interpreted in
  18.     immediate mode or executed as program statements when the Basic
  19.     program is run.  A built-in line number based editor allows
  20.     program input from the console keyboard.  See below for the
  21.     commands the interpreter recognizes.
  22.     
  23.     FLAGS
  24.  
  25.     none
  26.  
  27.     COMMANDS
  28.         
  29.     Standard mumbleSoft Basic Commands:
  30.  
  31.     load STRINGEXPR
  32.  
  33.         Load a program into memory from the named file. The
  34.         program previously in memory is erased.  All
  35.         variables are cleared.  All lines in the file must
  36.         begin with a line number.  Line numbers do not
  37.         need to be in increasing order.
  38.  
  39.  
  40.     save STRINGEXPR
  41.  
  42.         Save the current program to a named file.
  43.  
  44.     new
  45.  
  46.         Erase the program in memory.  All files are closed and
  47.         all variables are cleared.
  48.  
  49.     clear
  50.  
  51.         All  variables are cleared.  All arrays and string
  52.         variables are deallocated.
  53.  
  54.     run { LINENUM }
  55.     run { STRINGEXPR { , LINENUM } }
  56.  
  57.         Begin execution of the program at the first line, or at
  58.         the specified line.  All variables are cleared.  If a
  59.         STRINGEXPR is given then the BASIC program with that name
  60.         file is loaded into memory first.  Program lines are
  61.         executed in line number order.
  62.  
  63.     cont
  64.  
  65.         CONTinue execution of the program on the next statement
  66.         after the statement on which the program stopped execution
  67.         due to a STOP command or an error.  See BUGS section.
  68.  
  69.     goto LINENUM
  70.  
  71.         This statement will transfer control to the line number
  72.         specified.  If the program is not running, then this
  73.         command will begin execution at the specified line
  74.         without clearing the variables.  An "Undefined line"
  75.         error will occur if LINENUM doesn't exist in the program.
  76.  
  77.     list
  78.         List the whole program.
  79.  
  80.     list 1-3
  81.         List lines 1 to 2
  82.  
  83.     list -2
  84.         List lines up to 1
  85.  
  86.     list 1
  87.         List line 1
  88.     
  89.     list 2-
  90.         List lines from 2 on
  91.  
  92.     merge STRINGEXPR
  93.  
  94.         Load a program into memory.  The previous program
  95.         remains in memory; if a line exists in both programs,
  96.         the newly loaded line is kept.
  97.  
  98.     renum STRINGEXPR VAL { , VAL { , VAL { , VAL} } }
  99.  
  100.         Renumber program lines.  By default, the new sequence
  101.         is 10,20,30,... The first argument is a new initial
  102.         line number; the second argument is the increment
  103.         between line numbers. The third and fourth arguments,
  104.         if present, specify a limiting range of old line numbers
  105.         to renumber.  RENUM can be used to move non-overlapping
  106.         blocks of code.
  107.      
  108.     edit LINENUM
  109.  
  110.         Edit a given line. If the exit from the edit is via a
  111.         cntrl-c then do not change the line.
  112.             i    insert till <return>
  113.             x    delete one char
  114.             A    append to end of line
  115.  
  116.     delete LINENUM - LINENUM
  117.  
  118.         Delete a specified range of lines. If not found then no
  119.         lines will be deleted.  If used inside a program, DEL
  120.         will terminate execution only if it deletes the line on
  121.         which it appears.
  122.  
  123.     exit
  124.     bye
  125.     quit
  126.  
  127.         Terminates the basic interpreter, ending program
  128.         execution and closing all files.
  129.  
  130.  
  131.     STATEMENTS
  132.  
  133.     { let } VAR = EXPR
  134.  
  135.         Assign a value to a variable.  Variable names can be up
  136.         to 31 significant characters, consisting of letters,
  137.         digits, underscores, and an ending dollar sign. 
  138.         Variable names are case-insensitive.  Variables can
  139.         hold real numbers (IEEE double) or strings of up
  140.         to 254 characters.  If the variable name ends with a
  141.         "$" it holds strings, otherwise it holds numbers.  If a
  142.         statement starts with a variable name then an implied
  143.         LET is assumed.
  144.  
  145.     print or '?' VAL | STRINGVAL { { , | ; } VAL ... } { ; }
  146.     print #FNUM, VAL ...
  147.  
  148.         This command will print its parameters. If a
  149.         semi-colon is used between parameters then no spaces
  150.         are inserted between those parameters.  The print
  151.         output is terminated with a carriage return unless the
  152.         parameter list ends with a semi-colon.  If a file
  153.         descriptor is given then output is redirected to the
  154.         given file.
  155.  
  156.         If a
  157.             tab(VAL)
  158.         is found in a print statement, then print output will
  159.         skip to the horizontal position specified by VAL.
  160.  
  161.     input { # FNUM , } { STRINGVAR | VAR { , VAR } }
  162.  
  163.     input "prompt"; { STRINGVAR | VAR  { , VAR } }
  164.  
  165.         Input from a terminal or from a file. If the input is
  166.         from the terminal then a prompt message can also be
  167.         added.
  168.         
  169.         All input to string variables is "line input"; a whole
  170.         input line will be read into one string variable.  This
  171.         usage is different from other versions Basic.
  172.  
  173.     get STRINGVAR
  174.     
  175.         Gets one character from the console keyboard.  Blocking.
  176.     
  177.     cls
  178.         Clear the terminals screen.  Leaves the cursor in the
  179.         upper left corner.  For Applesoft BASIC fans, the "home"
  180.         command will also do this.
  181.  
  182.     end
  183.  
  184.         Terminates program execution and returns to the command
  185.         prompt.  Not required.
  186.  
  187.     stop
  188.  
  189.         Stops the execution of the program and returns to
  190.         the command prompt.  Prints a "Break..." message.
  191.  
  192.     if EXPR then STATEMENT { : STATEMENT } { : else STATEMENT }
  193.     if EXPR then LINENUM
  194.     if EXPR
  195.  
  196.         The IF statement.  If the condition is true then the
  197.         STATEMENTS after the THEN are executed and the
  198.         statements after the ELSE are skipped.  If the
  199.         condition is false then the statements after the "else"
  200.         are executed instead.  If the item after "then" is a
  201.         line number then a goto is executed.
  202.         
  203.         If the condition is true and there is no THEN on the
  204.         same line, statements are executed until a line
  205.         with an ENDIF is found.  (block IF() ... ENDIF)
  206.  
  207.     for VAR = EXPR to EXPR { step EXPR }
  208.  
  209.         Beginning of a "for next" loop.  It takes a starting
  210.         value, a limit and an optional step argument.  If the
  211.         step value is negative, the variable counts down.  The
  212.         body of the loop is not executed if the end condition
  213.         is true initially.
  214.  
  215.         Example:
  216.             for i=1 to 10 : print i, : next i
  217.             rem prints the numbers from 1 through 10
  218.  
  219.     next { VAR }
  220.  
  221.         End of a "for next" loop.  If the termination
  222.         conditions are met then execution falls through to the
  223.         following statement, otherwise execution returns to the
  224.         statement following the corresponding "for" statement.
  225.         The "next" does not need a variable name parameter.  If
  226.         this is the case the innermost "for" loop is used.
  227.  
  228.     while { EXPR }
  229.  
  230.         Start of a WHILE loop. The loop is repeated until EXPR
  231.         is false. If EXPR is false at loop entry, then the loop
  232.         is not executed at all. A WHILE loop must be
  233.         terminated by a WEND statement.
  234.  
  235.     wend { EXPR }
  236.  
  237.         Terminating statement of a WHILE loop.  If EXPR is true
  238.         then exit the loop.  Only one WEND is allowed for each
  239.         WHILE.  A WHILE-WEND loop without a condition will loop
  240.         forever.
  241.  
  242.     gosub LINENUM
  243.  
  244.         Transfer command to a line number. Save return address
  245.         so that the program can resume execution at the
  246.         statement after the "gosub" command.  The recursion
  247.         depth is limited only by available memory.
  248.  
  249.     return
  250.  
  251.         Returns from the most recently activated subroutine
  252.         call (must have been called by gosub).
  253.  
  254.     on EXPR   goto  LINENUM { , LINENUM ... }
  255.     on EXPR   gosub LINENUM { , LINENUM ... }
  256.     on error goto  LINENUM
  257.  
  258.         This command will execute either a goto or a gosub to
  259.         the specified line number indexed by the value of EXPR.
  260.         
  261.         If the error form is used, only one linenumber is
  262.         allowed.  LINENUM is the line to which control is
  263.         transferred if an error occurs.  A GOTO or CONT statement
  264.         can be used to resume execution.  An error inside a named
  265.         SUB subroutine cannot be resumed from or CONTinued.
  266.  
  267.     sub NAME ( VAR { , VAR ... } }
  268.  
  269.         Subroutine entry.  May be called by a GOSUB statement
  270.         or by NAME. A SUB subroutine must be exited by a
  271.         RETURN statement.  There should be only one RETURN
  272.         statement per SUB subroutine.  The variables in the
  273.         VAR list become local variables. String and numeric
  274.         arguments are passed by value; array arguments must
  275.         be pre-dimensioned and are passed by reference.
  276.         
  277.         Example:
  278.             110  x = foo (7, j) : rem Pass 7 and j by value.
  279.             ...
  280.             2000 sub foo (x,y,z) : rem z is a local variable
  281.             2010   print x       : rem prints 7 the first time
  282.             2090 return (y+1)    : rem also restores x,y,z
  283.  
  284.     dim VAR( d { , d { , d } } ) { , VAR( d { , d { , d } } ) }
  285.  
  286.         Dimension an array or list of arrays (string or numeric). 
  287.         A maximum of 4 dimensions can be used. The maximum
  288.         dimension size is limited by available memory. Legal
  289.         array subscripts are from 0 up and including the
  290.         dimension specified; d+1 elements are allocated.  All
  291.         arrays must be dimensioned before use and can be
  292.         dimensioned only once in a program.
  293.         
  294.         Example:
  295.             10 dim a(10)
  296.             20 for i=0 to 10
  297.             30   a(i) = i^2
  298.             40 next i
  299.             50 print a(5) : rem should print 25
  300.  
  301.     read VAR { , VAR }
  302.  
  303.         Read data from the DATA statements contained in the
  304.         program. List items can be either string or numeric
  305.         variables. Reading past the end the last DATA statement
  306.         generates an error.
  307.  
  308.     data ITEM { , ITEM }
  309.  
  310.         DATA statements contain the data used in the READ
  311.         statements. Items must be separated by commas.  The
  312.         items may be either numeric or string expressions,
  313.         corresponding to the type of variable being read.
  314.         Reading the wrong kind of object produces a "Type
  315.         mismatch" error.
  316.  
  317.     restore { LINENUM }
  318.  
  319.         The RESTORE statement causes the next READ to use the
  320.         first DATA statement in the program.  If a LINENUM is
  321.         given then the DATA statement on or after that
  322.         particular line is used next.
  323.  
  324.     rem or "`"
  325.  
  326.         A remark or comment statement.  Ignored by the program
  327.         during execution, however a REM statement can be the
  328.         target of a GOTO or GOSUB.
  329.  
  330.     open STRINGEXPR for { input|output|append } as # FNUM
  331.  
  332.         Open a file. The { input|output|append } parameter
  333.         specifies whether the file is to be read, written or
  334.         appended.  If STRINGEXPR is "stdin" for input or
  335.         "stdout" for output then the console will be used
  336.         instead of a file.  A "file not found" error will
  337.         occur if a non-existant file is specified in an OPEN
  338.         for input statement.
  339.  
  340.     close # FNUM
  341.  
  342.         Close a file. Releases the file descriptor and flushes
  343.         out all stored data.
  344.  
  345.     def fnNAME ( VAR { , VAR } ) = EXPR
  346.  
  347.         Define a user definable function.
  348.         
  349.         Example:
  350.             10 def fnplus(x,y) = x+y
  351.             20 print fnplus(3,5) : rem prints 8
  352.  
  353.     { let } mid$( STRINGVAR, EXPR1, EXPR2 ) = STRINGEXPR
  354.  
  355.         Insert STRINGEXPR into STRINGVAR starting at EXPR1 
  356.         for character length EXPR2.
  357.  
  358.     exec(STRINGEXPR)
  359.  
  360.         Executes STRINGEXPR as a statement or command. 
  361.         e.g. exec("print " + "x") will print the value of x.
  362.  
  363.     poke ADDR_EXPR, DATA_EXPR
  364.  
  365.         Poke a byte into a memory location. Unreasonable
  366.         addresses can cause bus-errors.
  367.  
  368.     push VAR { , VAR ... }
  369.  
  370.         Pushes one or more expressions or variables onto an
  371.         internal stack.  Expressions can be returned using the
  372.         POP function; variables can be returned by using the
  373.         POP statement.
  374.     
  375.     pop VAL
  376.  
  377.         POP statement (see also POP function). Pops VAL
  378.         variables off the internal stack, restoring the value
  379.         of those variables to their pushed values.
  380.     
  381.     NUMERIC FUNCTIONS
  382.  
  383.     sgn(VAL)
  384.  
  385.         Returns the sign of the parameter value.  Returns 1 if
  386.         the value is greater than zero , zero if equal to zero.
  387.         -1 if negative.
  388.  
  389.     abs(x)
  390.  
  391.         Returns the absolute value of x.
  392.  
  393.     int(x)
  394.  
  395.         Returns the integer value of x.  Truncates toward zero.
  396.  
  397.     sqr(x)
  398.  
  399.         Returns the square root of x.
  400.  
  401.     log(x)
  402.  
  403.         Returns the natural logarithm of x.
  404.  
  405.     exp(x)
  406.  
  407.         Returns e^x. e=2.7182818...
  408.  
  409.     sin(x)
  410.     cos(x)
  411.     atn(x)
  412.  
  413.         Trigonometric functions: sin, cosine and arctangent. 
  414.  
  415.     pi
  416.     
  417.         Returns pi, 3.14159265358979323... 
  418.  
  419.     rnd(x)
  420.  
  421.         Returns a random number between 1 and int(x)-1.  If x
  422.         is negative then x seeds the random number generator.
  423.         If x is 1, then returns a fraction between 0 and 1.
  424.  
  425.     len(STRINGEXPR)
  426.  
  427.         Returns the length of the string STRINGEXPR.
  428.  
  429.     val(STRINGEXPR)
  430.  
  431.         Value of the expression contained in STRINGEXPR.
  432.         STRINGEXPR may be a string literal, variable, function,
  433.         or expression.
  434.         
  435.         For example, VAL("1+sqr(4)") yields 3.
  436.  
  437.     asc(STRINGEXPR)
  438.  
  439.         Returns the ascii code for the first character of
  440.         STRINGEXPR.  A null string returns zero.
  441.  
  442.     instr(a$, b$ { , VAL } )
  443.  
  444.         Returns the position of the substring b$ in the string a$
  445.         or returns a zero if b$ is not a substring.
  446.         VAL is an optional starting position in a$
  447.  
  448.     eof(FILENUM)
  449.  
  450.         Returns true if the file specified by FILENUM has reached
  451.         the end of the file.
  452.  
  453.     pop
  454.  
  455.         POP function (see also POP statement). Pops one variable
  456.         value off the stack and returns that value (string or
  457.         numeric).
  458.         
  459.         (POP can be used as either a statement (with a
  460.         parameter) or a function (no parameter). Note that the
  461.         POP function, unlike the POP statement, does not
  462.         restore the value of the variable pushed, but only
  463.         returns the pushed value.  This use of the POP
  464.         statement is different from the Applesoft usage.)
  465.  
  466.     peek( ADDR { , VAL } )
  467.  
  468.         Returns the value of the byte in memory at address ADDR.
  469.         If VAL is 2 or 4, returns the value of the 16-bit or
  470.         32-bit word respectively (if correctly aligned).
  471.         If VAL is 8, returns the value of the numeric variable
  472.         located at ADDR.  peek(varptr(x),8) equals x.
  473.  
  474.     varptr( VAR | STRINGVAR )
  475.     
  476.         Returns the memory address of a variable.
  477.     
  478.     erl
  479.  
  480.         Returns the line number of the last error.  Zero if the
  481.         error was in immediate mode.  The variable errorstatus$
  482.         gives the error type.
  483.  
  484.     timer
  485.  
  486.         Returns a numeric value of elapsed of seconds from the
  487.         computers internal clock.
  488.  
  489.     
  490.     STRING FUNCTIONS
  491.  
  492.     x$ + y$
  493.  
  494.         String concatenation.  Result must be 254 characters or less.
  495.     
  496.     chr$(VAL)
  497.  
  498.         Returns the ascii character corresponding to the value
  499.         of VAL.
  500.  
  501.     str$( VAL { , EXPR } )
  502.  
  503.         Returns a string representation corresponding to VAL.
  504.         If EXPR is present then the string is padded to that
  505.         length.
  506.  
  507.     inkey$
  508.  
  509.         Return one character from the keyboard if input is
  510.         available. Returns a zero length string { "" } if no
  511.         keyboard input is available.  Non-blocking.  Can be used
  512.         for keyboard polling.
  513.  
  514.     input$( EXPR { , FILENUM } )
  515.  
  516.         Returns EXPR characters from file FILENUM. If f is not present
  517.         then get input from the console keyboard.
  518.  
  519.     mid$( a$, i { , j } )
  520.  
  521.         Returns a substring of a$ starting at the i'th
  522.         positions and j characters in length. If the second
  523.         parameter is not specified then the substring is taken
  524.         from the start position to the end of a$.
  525.  
  526.     right$(a$, EXPR )
  527.  
  528.         Returns the right EXPR characters of a$.
  529.  
  530.     left$(a$, EXPR )
  531.  
  532.         Returns the left EXPR characters of a$.
  533.  
  534.     field$( STRINGVAL, VAL { , STRINGVAL } )
  535.  
  536.         Returns the n-th field of the first string.  If the
  537.         optional string is present then use the first character
  538.         of that string as the field separator.  The default
  539.         separator is a space.  Similar to UNIX 'awk' fields.
  540.         
  541.         e.g.  field$("11 22 33 44", 3)  returns  "33"
  542.  
  543.     hex$( VAL { , EXPR } )
  544.     bin$( VAL { , EXPR } )
  545.  
  546.         Returns the hexadecimal or binary string representation
  547.         corresponding to VAL.  If EXPR is present then the
  548.         string is padded with zeros to make it that length.
  549.  
  550.     lcase$( STRINGVAL )
  551.  
  552.         Returns STRINGVAL in all lower case characters.
  553.  
  554.     errorstatus$
  555.  
  556.         Returns the error message for the last error.
  557.  
  558.  
  559.     OPERATORS
  560.  
  561.     The following mathematical operators  are available:
  562.  
  563.         ^    exponentiation
  564.         *    multiplication
  565.         /    division
  566.         mod    remainder
  567.         +    addition
  568.         -    subtraction
  569.  
  570.     logical operators: (any non-zero value is true)
  571.  
  572.             not    logical not
  573.  
  574.     bitwise operators:
  575.  
  576.             and    bitwise and
  577.             or    bitwise or
  578.             xor    bitwise exclusive-or
  579.  
  580.     comparison operators:
  581.  
  582.             <=    less than or equal
  583.             <>    not equal to
  584.             >=    greater than or equal
  585.             =    equal
  586.             >    greater than
  587.             <    less than
  588.  
  589.     x$=y$, x$<y$, x$>y$, x$<=y$, x$>=y$, x$<>y$
  590.  
  591.         String comparisons; result is 1 if true, 0 if false.
  592.         
  593.     Operator precedence (highest to lowest):
  594.  
  595.         ( )
  596.         not -{unary_minus} functions
  597.         ^
  598.         * / mod
  599.         + -
  600.         = < > <= >= <>
  601.         and
  602.         or xor
  603.  
  604.     
  605.     UNIX commands and functions:
  606.  
  607.     sys( STRINGVAL )
  608.  
  609.         UNIX system call.  The string parameter is given to
  610.         the shell as a command.
  611.  
  612.     argv$
  613.         Returns the UNIX shell command line arguments.
  614.  
  615.  
  616.     Macintosh commands:
  617.  
  618.     gotoxy VAL, VAL
  619.  
  620.         Set the horizontal and vertical location of the
  621.         text output cursor.  (0,0) is the upper left corner.
  622.  
  623.     moveto VAL, VAL
  624.  
  625.         Sets the (x,y) location of the graphics pen.
  626.  
  627.     lineto VAL, VAL
  628.  
  629.         Draws a line from the current pen location to location
  630.         (x,y) in the graphics window.
  631.  
  632.     window x, y, char_cols, char_lines
  633.  
  634.         Change the text console window position and size.
  635.  
  636.     graphics window x, y, char_cols, char_lines
  637.  
  638.         Change the graphics window position and size.
  639.  
  640.     morse STRINGVAL { , VAL, VAL, VAL, VAL }
  641.  
  642.         Plays morse code through the speaker.
  643.         The parameters are { dot-speed-wpm, volume{0..100},
  644.         word-speed-wpm, frequency_cps }
  645.  
  646.     sound VAL, VAL, VAL 
  647.  
  648.         The parameters are
  649.         { frequency_cps, seconds_duration, volume{0..100} }
  650.     
  651.     say STRINGVAL
  652.  
  653.         Speaks STRINGVAL if the Speech Manager Extension is
  654.         resident.  Try "say a$,200,46,1" for faster speech.
  655.  
  656.     open "SFGetFile" for input  as #FNUM
  657.     open "SFPutFile" for output as #FNUM
  658.  
  659.         Puts up a standard file dialog for the file name.
  660.  
  661.     call EXPR
  662.     
  663.         Calls the 68K code at address EXPR. 
  664.     
  665.     Lots of other undocumented quickdraw and sprite commands.
  666.  
  667.     
  668.     Macintosh functions:
  669.     
  670.     fre
  671.         Returns the amount of memory left for program use. 
  672.     
  673.     date$
  674.         Returns a string corresponding to the current date.
  675.  
  676.     time$
  677.         Returns a string corresponding to the current time.
  678.  
  679.     pos(VAL)
  680.  
  681.         Returns the horizontal position of the text cursor.
  682.         If VAL is negative returns the vertical position.
  683.     
  684.     errorstatus$ also returns the full path name of the program and
  685.         files opened by SFGetFile, under System 7 only, and only
  686.         if the name fits in a string variable.
  687.     
  688.     
  689.     Macintosh menu items:
  690.  
  691.     Open or <cmd>O     will put up a dialog to allow selection
  692.             of a program file to load.  Basic Program file
  693.             names must end with a ".bas" suffix.
  694.  
  695.     Copy        will allow copying picts from the graphics
  696.             window.
  697.     
  698.     <cmd>.         command-period will stop program execution.
  699.  
  700.     Print        Only the graphics window can be printed.
  701.  
  702.  
  703.     CONVENTIONS
  704.  
  705.     EXPR        any expression that evaluates to a numeric value.
  706.     STRINGEXPR    a string expression.
  707.     VAR        a numeric variable.
  708.     STRINGVAR    a string variable.
  709.     
  710.     All program lines must begin with a line number.  A line number
  711.     entered by itself will delete that program line. Using spaces
  712.     (indentation) between the line number and program statements is
  713.     legal.  Line numbers can be between 1 and 2147483647.
  714.     
  715.     Hexadecimal numbers can be entered by preceding them with
  716.     a "0x" as in 0x02ae, or by "&h" as in &h0172.
  717.     
  718.     Multiple statements may be given on one line, separated by
  719.     colons:
  720.  
  721.         10 INPUT X : PRINT X : STOP
  722.  
  723.  
  724.     DIAGNOSTICS
  725.  
  726.     Some errors can be caught by the user program using the "on error
  727.     goto" command. If no error trapping routine has been supplied
  728.     then program execution is terminated and a message is printed
  729.     with the corresponding line number.
  730.  
  731.     Graphics may require that the preferred memory requirements be
  732.     increased.
  733.  
  734.  
  735.     AUTHORS
  736.     
  737.     David Gillespie wrote basic.p 1.0 and the p2c lib.
  738.     Ron Nicholson (rhn@netcom.com) added file i/o and
  739.     did the Macintosh and PowerMac port.  (1990-94Nov)
  740.  
  741.     
  742.     BUGS
  743.  
  744.     Many.
  745.  
  746.     Can't CONTinue from an error inside a named SUB subroutine.
  747.  
  748.     Macintosh screen editing will only recognise the last line modified
  749.     before a RETURN or ENTER key.
  750.  
  751.     There are several undocumented graphics and sprite commands
  752.     and keywords.
  753.  
  754.  
  755.     Portions Copyright (C) 1989 Dave Gillespie
  756.     Copyright (C) 1994 Ronald H. Nicholson, Jr., All rights reserved.
  757.     "Applesoft" is a trademark of Apple Computer, Inc.
  758.  
  759.